# 1、有这样的一个列表，深度不可知，列表里面还会嵌套列表，我想要把这个列表从左到右拼接成一个新的列表，且顺序不变
# 举例：[12,33,[11,22,33,[55,66,99]],[55,66]]
# 变成：[12, 33, 11, 22, 33, 55, 66, 99, 55, 66]

'''
def list1(a):
    b = []
    for i in a:
        if type(i) == list:
            b.extend(list1(i))
        else:
            b.append(i)
    return b
c=[12,33,[11,22,[33,55],66,99],[55,66]]
print(list1(c))
'''

# 2、编写装饰器，为多个函数加上认证的功能（用户的账号密码）
#  要求登录成功一次，后续的函数都无需输入用户名和密码

'''
a = {'username': 'user123', 'password': 'pass123'}
def b(func):
    def c(*args, **kwargs):
        username = input("请输入用户名: ")
        password = input("请输入密码: ")
        if username == a['username'] and password == a['password']:
            return func(*args, **kwargs)
        else:
            print("认证失败，请检查用户名和密码")
    return c
@b
def d():
    print("登陆成功")
d()
'''

# 3、请实现一个装饰器，把函数的返回值+100然后返回

'''
def return_value(func):
    def return1(*args,**kwargs):
        result = func(*args,**kwargs)
        result = result+100
        return result
    return return1
@return_value
def sum1(a:int,b:int):
    return a+b

re = sum1(1,2)
print(re)
'''

# 4、请实现一个装饰器，通过一次调用使函数重复执行5次


# def func_rep(func):
#     def func_rep1(n):
#         for i in range(n):
#             func(n)
#     return func_rep1
#
# @func_rep
# def sum2(n):
#     print("执行")
# sum2(5)


# 5、输入任意个字符串,分别实现从小到大输出和从大到小输出

def paixu(func):
    def d(c):
        func(c)
        a = sorted(c,key=lambda x:len(x))
        print("从小到大输出：",a)
        b = sorted(c,key=len,reverse=True)
        print("从大到小输出",b)
    return d

@paixu
def e(c):
    pass
list1 = ["fjdgfhg","asd","asgeb","d"]
e(list1)
# 6、接收n个数字，求这些参数数字的和

'''
def sum_number (*args):
    return sum(*args)

result = sum_number([1, 2, 3, 4, 5])
print("和:", result)
'''

# 7、编写一个函数，实现数字的自增（从0开始，每调用一次，数字+1）

#
# a = 0
# def cre_number():
#     def increment():
#         global a
#         a+=1
#         return a
#     return increment
# i = cre_number()
# print(i())
# print(i())
# print(i())

